// Generated from D:\workspace\20140311\ToolBag\ParseTool\src\parsetool\dataview\DataView.g4 by ANTLR 4.1
package parsetool.dataview;
import org.antlr.v4.runtime.Lexer;
import org.antlr.v4.runtime.CharStream;
import org.antlr.v4.runtime.Token;
import org.antlr.v4.runtime.TokenStream;
import org.antlr.v4.runtime.*;
import org.antlr.v4.runtime.atn.*;
import org.antlr.v4.runtime.dfa.DFA;
import org.antlr.v4.runtime.misc.*;

@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
public class DataViewLexer extends Lexer {
	protected static final DFA[] _decisionToDFA;
	protected static final PredictionContextCache _sharedContextCache =
		new PredictionContextCache();
	public static final int
		T__61=1, T__60=2, T__59=3, T__58=4, T__57=5, T__56=6, T__55=7, T__54=8, 
		T__53=9, T__52=10, T__51=11, T__50=12, T__49=13, T__48=14, T__47=15, T__46=16, 
		T__45=17, T__44=18, T__43=19, T__42=20, T__41=21, T__40=22, T__39=23, 
		T__38=24, T__37=25, T__36=26, T__35=27, T__34=28, T__33=29, T__32=30, 
		T__31=31, T__30=32, T__29=33, T__28=34, T__27=35, T__26=36, T__25=37, 
		T__24=38, T__23=39, T__22=40, T__21=41, T__20=42, T__19=43, T__18=44, 
		T__17=45, T__16=46, T__15=47, T__14=48, T__13=49, T__12=50, T__11=51, 
		T__10=52, T__9=53, T__8=54, T__7=55, T__6=56, T__5=57, T__4=58, T__3=59, 
		T__2=60, T__1=61, T__0=62, BOOL=63, ID=64, INT=65, FLOAT=66, COMMENT=67, 
		CODE=68, WS=69, STRING=70, OPTION_STRING=71, CHAR=72;
	public static String[] modeNames = {
		"DEFAULT_MODE"
	};

	public static final String[] tokenNames = {
		"<INVALID>",
		"'from'", "'left'", "'&'", "'except'", "'like'", "'or'", "'*'", "'<'", 
		"'!='", "'<='", "'by'", "'}'", "'between'", "'case'", "'any'", "'%'", 
		"'union'", "'on'", "')'", "'group'", "'='", "'desc'", "'!<'", "'when'", 
		"'outer'", "'having'", "'|'", "'join'", "'in'", "'select'", "','", "'-'", 
		"'not'", "'('", "'?'", "'as'", "'!>'", "'all'", "'{'", "'and'", "'order'", 
		"'else'", "'asc'", "'$'", "'some'", "'^'", "'.'", "'inner'", "'+'", "'<>'", 
		"'>'", "'exists'", "'top'", "'right'", "'then'", "'intersect'", "'where'", 
		"'/'", "'~'", "'>='", "'#'", "'end'", "BOOL", "ID", "INT", "FLOAT", "COMMENT", 
		"CODE", "WS", "STRING", "OPTION_STRING", "CHAR"
	};
	public static final String[] ruleNames = {
		"T__61", "T__60", "T__59", "T__58", "T__57", "T__56", "T__55", "T__54", 
		"T__53", "T__52", "T__51", "T__50", "T__49", "T__48", "T__47", "T__46", 
		"T__45", "T__44", "T__43", "T__42", "T__41", "T__40", "T__39", "T__38", 
		"T__37", "T__36", "T__35", "T__34", "T__33", "T__32", "T__31", "T__30", 
		"T__29", "T__28", "T__27", "T__26", "T__25", "T__24", "T__23", "T__22", 
		"T__21", "T__20", "T__19", "T__18", "T__17", "T__16", "T__15", "T__14", 
		"T__13", "T__12", "T__11", "T__10", "T__9", "T__8", "T__7", "T__6", "T__5", 
		"T__4", "T__3", "T__2", "T__1", "T__0", "BOOL", "ID", "INT", "FLOAT", 
		"COMMENT", "CODE", "WS", "STRING", "OPTION_STRING", "CHAR", "EXPONENT", 
		"HEX_DIGIT", "ESC_SEQ", "OCTAL_ESC", "UNICODE_ESC"
	};


	public DataViewLexer(CharStream input) {
		super(input);
		_interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
	}

	@Override
	public String getGrammarFileName() { return "DataView.g4"; }

	@Override
	public String[] getTokenNames() { return tokenNames; }

	@Override
	public String[] getRuleNames() { return ruleNames; }

	@Override
	public String[] getModeNames() { return modeNames; }

	@Override
	public ATN getATN() { return _ATN; }

	@Override
	public void action(RuleContext _localctx, int ruleIndex, int actionIndex) {
		switch (ruleIndex) {
		case 66: COMMENT_action((RuleContext)_localctx, actionIndex); break;

		case 68: WS_action((RuleContext)_localctx, actionIndex); break;
		}
	}
	private void WS_action(RuleContext _localctx, int actionIndex) {
		switch (actionIndex) {
		case 1: skip(); break;
		}
	}
	private void COMMENT_action(RuleContext _localctx, int actionIndex) {
		switch (actionIndex) {
		case 0: skip(); break;
		}
	}

	public static final String _serializedATN =
		"\3\uacf5\uee8c\u4f5d\u8b0d\u4a45\u78bd\u1b2f\u3378\2J\u0230\b\1\4\2\t"+
		"\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13"+
		"\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+
		"\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+
		"\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t \4!"+
		"\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4"+
		",\t,\4-\t-\4.\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64\t"+
		"\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t;\4<\t<\4=\t="+
		"\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\tC\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I"+
		"\tI\4J\tJ\4K\tK\4L\tL\4M\tM\4N\tN\3\2\3\2\3\2\3\2\3\2\3\3\3\3\3\3\3\3"+
		"\3\3\3\4\3\4\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3\6\3\6\3\6\3\6\3\6\3\7\3\7\3"+
		"\7\3\b\3\b\3\t\3\t\3\n\3\n\3\n\3\13\3\13\3\13\3\f\3\f\3\f\3\r\3\r\3\16"+
		"\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\17\3\17\3\17\3\17\3\17\3\20\3\20"+
		"\3\20\3\20\3\21\3\21\3\22\3\22\3\22\3\22\3\22\3\22\3\23\3\23\3\23\3\24"+
		"\3\24\3\25\3\25\3\25\3\25\3\25\3\25\3\26\3\26\3\27\3\27\3\27\3\27\3\27"+
		"\3\30\3\30\3\30\3\31\3\31\3\31\3\31\3\31\3\32\3\32\3\32\3\32\3\32\3\32"+
		"\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\34\3\34\3\35\3\35\3\35\3\35\3\35"+
		"\3\36\3\36\3\36\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3 \3 \3!\3!\3\"\3\""+
		"\3\"\3\"\3#\3#\3$\3$\3%\3%\3%\3&\3&\3&\3\'\3\'\3\'\3\'\3(\3(\3)\3)\3)"+
		"\3)\3*\3*\3*\3*\3*\3*\3+\3+\3+\3+\3+\3,\3,\3,\3,\3-\3-\3.\3.\3.\3.\3."+
		"\3/\3/\3\60\3\60\3\61\3\61\3\61\3\61\3\61\3\61\3\62\3\62\3\63\3\63\3\63"+
		"\3\64\3\64\3\65\3\65\3\65\3\65\3\65\3\65\3\65\3\66\3\66\3\66\3\66\3\67"+
		"\3\67\3\67\3\67\3\67\3\67\38\38\38\38\38\39\39\39\39\39\39\39\39\39\3"+
		"9\3:\3:\3:\3:\3:\3:\3;\3;\3<\3<\3=\3=\3=\3>\3>\3?\3?\3?\3?\3@\3@\3@\3"+
		"@\3@\3@\3@\3@\3@\5@\u0198\n@\3A\3A\7A\u019c\nA\fA\16A\u019f\13A\3B\6B"+
		"\u01a2\nB\rB\16B\u01a3\3C\6C\u01a7\nC\rC\16C\u01a8\3C\3C\7C\u01ad\nC\f"+
		"C\16C\u01b0\13C\3C\5C\u01b3\nC\3C\3C\6C\u01b7\nC\rC\16C\u01b8\3C\5C\u01bc"+
		"\nC\3C\6C\u01bf\nC\rC\16C\u01c0\3C\5C\u01c4\nC\3D\3D\3D\3D\7D\u01ca\n"+
		"D\fD\16D\u01cd\13D\3D\5D\u01d0\nD\3D\3D\3D\3D\3D\7D\u01d7\nD\fD\16D\u01da"+
		"\13D\3D\3D\5D\u01de\nD\3D\3D\3E\3E\3E\3E\3E\7E\u01e7\nE\fE\16E\u01ea\13"+
		"E\3E\3E\3E\3E\3F\3F\3F\3G\3G\3G\7G\u01f6\nG\fG\16G\u01f9\13G\3G\3G\3H"+
		"\3H\3H\7H\u0200\nH\fH\16H\u0203\13H\3H\3H\3I\3I\3I\5I\u020a\nI\3I\3I\3"+
		"J\3J\5J\u0210\nJ\3J\6J\u0213\nJ\rJ\16J\u0214\3K\3K\3L\3L\3L\3L\5L\u021d"+
		"\nL\3M\3M\3M\3M\3M\3M\3M\3M\3M\5M\u0228\nM\3N\3N\3N\3N\3N\3N\3N\4\u01d8"+
		"\u01e8O\3\3\1\5\4\1\7\5\1\t\6\1\13\7\1\r\b\1\17\t\1\21\n\1\23\13\1\25"+
		"\f\1\27\r\1\31\16\1\33\17\1\35\20\1\37\21\1!\22\1#\23\1%\24\1\'\25\1)"+
		"\26\1+\27\1-\30\1/\31\1\61\32\1\63\33\1\65\34\1\67\35\19\36\1;\37\1= "+
		"\1?!\1A\"\1C#\1E$\1G%\1I&\1K\'\1M(\1O)\1Q*\1S+\1U,\1W-\1Y.\1[/\1]\60\1"+
		"_\61\1a\62\1c\63\1e\64\1g\65\1i\66\1k\67\1m8\1o9\1q:\1s;\1u<\1w=\1y>\1"+
		"{?\1}@\1\177A\1\u0081B\1\u0083C\1\u0085D\1\u0087E\2\u0089F\1\u008bG\3"+
		"\u008dH\1\u008fI\1\u0091J\1\u0093\2\1\u0095\2\1\u0097\2\1\u0099\2\1\u009b"+
		"\2\1\3\2\f\5\2C\\aac|\6\2\62;C\\aac|\4\2\f\f\17\17\5\2\13\f\17\17\"\""+
		"\4\2))^^\4\2]]__\4\2GGgg\4\2--//\5\2\62;CHch\n\2$$))^^ddhhppttvv\u0245"+
		"\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2"+
		"\2\2\2\17\3\2\2\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27\3\2\2\2"+
		"\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2\2\2\2\37\3\2\2\2\2!\3\2\2\2\2#\3\2"+
		"\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2\2\2\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2"+
		"\2\2\61\3\2\2\2\2\63\3\2\2\2\2\65\3\2\2\2\2\67\3\2\2\2\29\3\2\2\2\2;\3"+
		"\2\2\2\2=\3\2\2\2\2?\3\2\2\2\2A\3\2\2\2\2C\3\2\2\2\2E\3\2\2\2\2G\3\2\2"+
		"\2\2I\3\2\2\2\2K\3\2\2\2\2M\3\2\2\2\2O\3\2\2\2\2Q\3\2\2\2\2S\3\2\2\2\2"+
		"U\3\2\2\2\2W\3\2\2\2\2Y\3\2\2\2\2[\3\2\2\2\2]\3\2\2\2\2_\3\2\2\2\2a\3"+
		"\2\2\2\2c\3\2\2\2\2e\3\2\2\2\2g\3\2\2\2\2i\3\2\2\2\2k\3\2\2\2\2m\3\2\2"+
		"\2\2o\3\2\2\2\2q\3\2\2\2\2s\3\2\2\2\2u\3\2\2\2\2w\3\2\2\2\2y\3\2\2\2\2"+
		"{\3\2\2\2\2}\3\2\2\2\2\177\3\2\2\2\2\u0081\3\2\2\2\2\u0083\3\2\2\2\2\u0085"+
		"\3\2\2\2\2\u0087\3\2\2\2\2\u0089\3\2\2\2\2\u008b\3\2\2\2\2\u008d\3\2\2"+
		"\2\2\u008f\3\2\2\2\2\u0091\3\2\2\2\3\u009d\3\2\2\2\5\u00a2\3\2\2\2\7\u00a7"+
		"\3\2\2\2\t\u00a9\3\2\2\2\13\u00b0\3\2\2\2\r\u00b5\3\2\2\2\17\u00b8\3\2"+
		"\2\2\21\u00ba\3\2\2\2\23\u00bc\3\2\2\2\25\u00bf\3\2\2\2\27\u00c2\3\2\2"+
		"\2\31\u00c5\3\2\2\2\33\u00c7\3\2\2\2\35\u00cf\3\2\2\2\37\u00d4\3\2\2\2"+
		"!\u00d8\3\2\2\2#\u00da\3\2\2\2%\u00e0\3\2\2\2\'\u00e3\3\2\2\2)\u00e5\3"+
		"\2\2\2+\u00eb\3\2\2\2-\u00ed\3\2\2\2/\u00f2\3\2\2\2\61\u00f5\3\2\2\2\63"+
		"\u00fa\3\2\2\2\65\u0100\3\2\2\2\67\u0107\3\2\2\29\u0109\3\2\2\2;\u010e"+
		"\3\2\2\2=\u0111\3\2\2\2?\u0118\3\2\2\2A\u011a\3\2\2\2C\u011c\3\2\2\2E"+
		"\u0120\3\2\2\2G\u0122\3\2\2\2I\u0124\3\2\2\2K\u0127\3\2\2\2M\u012a\3\2"+
		"\2\2O\u012e\3\2\2\2Q\u0130\3\2\2\2S\u0134\3\2\2\2U\u013a\3\2\2\2W\u013f"+
		"\3\2\2\2Y\u0143\3\2\2\2[\u0145\3\2\2\2]\u014a\3\2\2\2_\u014c\3\2\2\2a"+
		"\u014e\3\2\2\2c\u0154\3\2\2\2e\u0156\3\2\2\2g\u0159\3\2\2\2i\u015b\3\2"+
		"\2\2k\u0162\3\2\2\2m\u0166\3\2\2\2o\u016c\3\2\2\2q\u0171\3\2\2\2s\u017b"+
		"\3\2\2\2u\u0181\3\2\2\2w\u0183\3\2\2\2y\u0185\3\2\2\2{\u0188\3\2\2\2}"+
		"\u018a\3\2\2\2\177\u0197\3\2\2\2\u0081\u0199\3\2\2\2\u0083\u01a1\3\2\2"+
		"\2\u0085\u01c3\3\2\2\2\u0087\u01dd\3\2\2\2\u0089\u01e1\3\2\2\2\u008b\u01ef"+
		"\3\2\2\2\u008d\u01f2\3\2\2\2\u008f\u01fc\3\2\2\2\u0091\u0206\3\2\2\2\u0093"+
		"\u020d\3\2\2\2\u0095\u0216\3\2\2\2\u0097\u021c\3\2\2\2\u0099\u0227\3\2"+
		"\2\2\u009b\u0229\3\2\2\2\u009d\u009e\7h\2\2\u009e\u009f\7t\2\2\u009f\u00a0"+
		"\7q\2\2\u00a0\u00a1\7o\2\2\u00a1\4\3\2\2\2\u00a2\u00a3\7n\2\2\u00a3\u00a4"+
		"\7g\2\2\u00a4\u00a5\7h\2\2\u00a5\u00a6\7v\2\2\u00a6\6\3\2\2\2\u00a7\u00a8"+
		"\7(\2\2\u00a8\b\3\2\2\2\u00a9\u00aa\7g\2\2\u00aa\u00ab\7z\2\2\u00ab\u00ac"+
		"\7e\2\2\u00ac\u00ad\7g\2\2\u00ad\u00ae\7r\2\2\u00ae\u00af\7v\2\2\u00af"+
		"\n\3\2\2\2\u00b0\u00b1\7n\2\2\u00b1\u00b2\7k\2\2\u00b2\u00b3\7m\2\2\u00b3"+
		"\u00b4\7g\2\2\u00b4\f\3\2\2\2\u00b5\u00b6\7q\2\2\u00b6\u00b7\7t\2\2\u00b7"+
		"\16\3\2\2\2\u00b8\u00b9\7,\2\2\u00b9\20\3\2\2\2\u00ba\u00bb\7>\2\2\u00bb"+
		"\22\3\2\2\2\u00bc\u00bd\7#\2\2\u00bd\u00be\7?\2\2\u00be\24\3\2\2\2\u00bf"+
		"\u00c0\7>\2\2\u00c0\u00c1\7?\2\2\u00c1\26\3\2\2\2\u00c2\u00c3\7d\2\2\u00c3"+
		"\u00c4\7{\2\2\u00c4\30\3\2\2\2\u00c5\u00c6\7\177\2\2\u00c6\32\3\2\2\2"+
		"\u00c7\u00c8\7d\2\2\u00c8\u00c9\7g\2\2\u00c9\u00ca\7v\2\2\u00ca\u00cb"+
		"\7y\2\2\u00cb\u00cc\7g\2\2\u00cc\u00cd\7g\2\2\u00cd\u00ce\7p\2\2\u00ce"+
		"\34\3\2\2\2\u00cf\u00d0\7e\2\2\u00d0\u00d1\7c\2\2\u00d1\u00d2\7u\2\2\u00d2"+
		"\u00d3\7g\2\2\u00d3\36\3\2\2\2\u00d4\u00d5\7c\2\2\u00d5\u00d6\7p\2\2\u00d6"+
		"\u00d7\7{\2\2\u00d7 \3\2\2\2\u00d8\u00d9\7\'\2\2\u00d9\"\3\2\2\2\u00da"+
		"\u00db\7w\2\2\u00db\u00dc\7p\2\2\u00dc\u00dd\7k\2\2\u00dd\u00de\7q\2\2"+
		"\u00de\u00df\7p\2\2\u00df$\3\2\2\2\u00e0\u00e1\7q\2\2\u00e1\u00e2\7p\2"+
		"\2\u00e2&\3\2\2\2\u00e3\u00e4\7+\2\2\u00e4(\3\2\2\2\u00e5\u00e6\7i\2\2"+
		"\u00e6\u00e7\7t\2\2\u00e7\u00e8\7q\2\2\u00e8\u00e9\7w\2\2\u00e9\u00ea"+
		"\7r\2\2\u00ea*\3\2\2\2\u00eb\u00ec\7?\2\2\u00ec,\3\2\2\2\u00ed\u00ee\7"+
		"f\2\2\u00ee\u00ef\7g\2\2\u00ef\u00f0\7u\2\2\u00f0\u00f1\7e\2\2\u00f1."+
		"\3\2\2\2\u00f2\u00f3\7#\2\2\u00f3\u00f4\7>\2\2\u00f4\60\3\2\2\2\u00f5"+
		"\u00f6\7y\2\2\u00f6\u00f7\7j\2\2\u00f7\u00f8\7g\2\2\u00f8\u00f9\7p\2\2"+
		"\u00f9\62\3\2\2\2\u00fa\u00fb\7q\2\2\u00fb\u00fc\7w\2\2\u00fc\u00fd\7"+
		"v\2\2\u00fd\u00fe\7g\2\2\u00fe\u00ff\7t\2\2\u00ff\64\3\2\2\2\u0100\u0101"+
		"\7j\2\2\u0101\u0102\7c\2\2\u0102\u0103\7x\2\2\u0103\u0104\7k\2\2\u0104"+
		"\u0105\7p\2\2\u0105\u0106\7i\2\2\u0106\66\3\2\2\2\u0107\u0108\7~\2\2\u0108"+
		"8\3\2\2\2\u0109\u010a\7l\2\2\u010a\u010b\7q\2\2\u010b\u010c\7k\2\2\u010c"+
		"\u010d\7p\2\2\u010d:\3\2\2\2\u010e\u010f\7k\2\2\u010f\u0110\7p\2\2\u0110"+
		"<\3\2\2\2\u0111\u0112\7u\2\2\u0112\u0113\7g\2\2\u0113\u0114\7n\2\2\u0114"+
		"\u0115\7g\2\2\u0115\u0116\7e\2\2\u0116\u0117\7v\2\2\u0117>\3\2\2\2\u0118"+
		"\u0119\7.\2\2\u0119@\3\2\2\2\u011a\u011b\7/\2\2\u011bB\3\2\2\2\u011c\u011d"+
		"\7p\2\2\u011d\u011e\7q\2\2\u011e\u011f\7v\2\2\u011fD\3\2\2\2\u0120\u0121"+
		"\7*\2\2\u0121F\3\2\2\2\u0122\u0123\7A\2\2\u0123H\3\2\2\2\u0124\u0125\7"+
		"c\2\2\u0125\u0126\7u\2\2\u0126J\3\2\2\2\u0127\u0128\7#\2\2\u0128\u0129"+
		"\7@\2\2\u0129L\3\2\2\2\u012a\u012b\7c\2\2\u012b\u012c\7n\2\2\u012c\u012d"+
		"\7n\2\2\u012dN\3\2\2\2\u012e\u012f\7}\2\2\u012fP\3\2\2\2\u0130\u0131\7"+
		"c\2\2\u0131\u0132\7p\2\2\u0132\u0133\7f\2\2\u0133R\3\2\2\2\u0134\u0135"+
		"\7q\2\2\u0135\u0136\7t\2\2\u0136\u0137\7f\2\2\u0137\u0138\7g\2\2\u0138"+
		"\u0139\7t\2\2\u0139T\3\2\2\2\u013a\u013b\7g\2\2\u013b\u013c\7n\2\2\u013c"+
		"\u013d\7u\2\2\u013d\u013e\7g\2\2\u013eV\3\2\2\2\u013f\u0140\7c\2\2\u0140"+
		"\u0141\7u\2\2\u0141\u0142\7e\2\2\u0142X\3\2\2\2\u0143\u0144\7&\2\2\u0144"+
		"Z\3\2\2\2\u0145\u0146\7u\2\2\u0146\u0147\7q\2\2\u0147\u0148\7o\2\2\u0148"+
		"\u0149\7g\2\2\u0149\\\3\2\2\2\u014a\u014b\7`\2\2\u014b^\3\2\2\2\u014c"+
		"\u014d\7\60\2\2\u014d`\3\2\2\2\u014e\u014f\7k\2\2\u014f\u0150\7p\2\2\u0150"+
		"\u0151\7p\2\2\u0151\u0152\7g\2\2\u0152\u0153\7t\2\2\u0153b\3\2\2\2\u0154"+
		"\u0155\7-\2\2\u0155d\3\2\2\2\u0156\u0157\7>\2\2\u0157\u0158\7@\2\2\u0158"+
		"f\3\2\2\2\u0159\u015a\7@\2\2\u015ah\3\2\2\2\u015b\u015c\7g\2\2\u015c\u015d"+
		"\7z\2\2\u015d\u015e\7k\2\2\u015e\u015f\7u\2\2\u015f\u0160\7v\2\2\u0160"+
		"\u0161\7u\2\2\u0161j\3\2\2\2\u0162\u0163\7v\2\2\u0163\u0164\7q\2\2\u0164"+
		"\u0165\7r\2\2\u0165l\3\2\2\2\u0166\u0167\7t\2\2\u0167\u0168\7k\2\2\u0168"+
		"\u0169\7i\2\2\u0169\u016a\7j\2\2\u016a\u016b\7v\2\2\u016bn\3\2\2\2\u016c"+
		"\u016d\7v\2\2\u016d\u016e\7j\2\2\u016e\u016f\7g\2\2\u016f\u0170\7p\2\2"+
		"\u0170p\3\2\2\2\u0171\u0172\7k\2\2\u0172\u0173\7p\2\2\u0173\u0174\7v\2"+
		"\2\u0174\u0175\7g\2\2\u0175\u0176\7t\2\2\u0176\u0177\7u\2\2\u0177\u0178"+
		"\7g\2\2\u0178\u0179\7e\2\2\u0179\u017a\7v\2\2\u017ar\3\2\2\2\u017b\u017c"+
		"\7y\2\2\u017c\u017d\7j\2\2\u017d\u017e\7g\2\2\u017e\u017f\7t\2\2\u017f"+
		"\u0180\7g\2\2\u0180t\3\2\2\2\u0181\u0182\7\61\2\2\u0182v\3\2\2\2\u0183"+
		"\u0184\7\u0080\2\2\u0184x\3\2\2\2\u0185\u0186\7@\2\2\u0186\u0187\7?\2"+
		"\2\u0187z\3\2\2\2\u0188\u0189\7%\2\2\u0189|\3\2\2\2\u018a\u018b\7g\2\2"+
		"\u018b\u018c\7p\2\2\u018c\u018d\7f\2\2\u018d~\3\2\2\2\u018e\u018f\7v\2"+
		"\2\u018f\u0190\7t\2\2\u0190\u0191\7w\2\2\u0191\u0198\7g\2\2\u0192\u0193"+
		"\7h\2\2\u0193\u0194\7c\2\2\u0194\u0195\7n\2\2\u0195\u0196\7u\2\2\u0196"+
		"\u0198\7g\2\2\u0197\u018e\3\2\2\2\u0197\u0192\3\2\2\2\u0198\u0080\3\2"+
		"\2\2\u0199\u019d\t\2\2\2\u019a\u019c\t\3\2\2\u019b\u019a\3\2\2\2\u019c"+
		"\u019f\3\2\2\2\u019d\u019b\3\2\2\2\u019d\u019e\3\2\2\2\u019e\u0082\3\2"+
		"\2\2\u019f\u019d\3\2\2\2\u01a0\u01a2\4\62;\2\u01a1\u01a0\3\2\2\2\u01a2"+
		"\u01a3\3\2\2\2\u01a3\u01a1\3\2\2\2\u01a3\u01a4\3\2\2\2\u01a4\u0084\3\2"+
		"\2\2\u01a5\u01a7\4\62;\2\u01a6\u01a5\3\2\2\2\u01a7\u01a8\3\2\2\2\u01a8"+
		"\u01a6\3\2\2\2\u01a8\u01a9\3\2\2\2\u01a9\u01aa\3\2\2\2\u01aa\u01ae\7\60"+
		"\2\2\u01ab\u01ad\4\62;\2\u01ac\u01ab\3\2\2\2\u01ad\u01b0\3\2\2\2\u01ae"+
		"\u01ac\3\2\2\2\u01ae\u01af\3\2\2\2\u01af\u01b2\3\2\2\2\u01b0\u01ae\3\2"+
		"\2\2\u01b1\u01b3\5\u0093J\2\u01b2\u01b1\3\2\2\2\u01b2\u01b3\3\2\2\2\u01b3"+
		"\u01c4\3\2\2\2\u01b4\u01b6\7\60\2\2\u01b5\u01b7\4\62;\2\u01b6\u01b5\3"+
		"\2\2\2\u01b7\u01b8\3\2\2\2\u01b8\u01b6\3\2\2\2\u01b8\u01b9\3\2\2\2\u01b9"+
		"\u01bb\3\2\2\2\u01ba\u01bc\5\u0093J\2\u01bb\u01ba\3\2\2\2\u01bb\u01bc"+
		"\3\2\2\2\u01bc\u01c4\3\2\2\2\u01bd\u01bf\4\62;\2\u01be\u01bd\3\2\2\2\u01bf"+
		"\u01c0\3\2\2\2\u01c0\u01be\3\2\2\2\u01c0\u01c1\3\2\2\2\u01c1\u01c2\3\2"+
		"\2\2\u01c2\u01c4\5\u0093J\2\u01c3\u01a6\3\2\2\2\u01c3\u01b4\3\2\2\2\u01c3"+
		"\u01be\3\2\2\2\u01c4\u0086\3\2\2\2\u01c5\u01c6\7\61\2\2\u01c6\u01c7\7"+
		"\61\2\2\u01c7\u01cb\3\2\2\2\u01c8\u01ca\n\4\2\2\u01c9\u01c8\3\2\2\2\u01ca"+
		"\u01cd\3\2\2\2\u01cb\u01c9\3\2\2\2\u01cb\u01cc\3\2\2\2\u01cc\u01cf\3\2"+
		"\2\2\u01cd\u01cb\3\2\2\2\u01ce\u01d0\7\17\2\2\u01cf\u01ce\3\2\2\2\u01cf"+
		"\u01d0\3\2\2\2\u01d0\u01d1\3\2\2\2\u01d1\u01de\7\f\2\2\u01d2\u01d3\7\61"+
		"\2\2\u01d3\u01d4\7,\2\2\u01d4\u01d8\3\2\2\2\u01d5\u01d7\13\2\2\2\u01d6"+
		"\u01d5\3\2\2\2\u01d7\u01da\3\2\2\2\u01d8\u01d9\3\2\2\2\u01d8\u01d6\3\2"+
		"\2\2\u01d9\u01db\3\2\2\2\u01da\u01d8\3\2\2\2\u01db\u01dc\7,\2\2\u01dc"+
		"\u01de\7\61\2\2\u01dd\u01c5\3\2\2\2\u01dd\u01d2\3\2\2\2\u01de\u01df\3"+
		"\2\2\2\u01df\u01e0\bD\2\2\u01e0\u0088\3\2\2\2\u01e1\u01e2\7>\2\2\u01e2"+
		"\u01e3\7>\2\2\u01e3\u01e4\7>\2\2\u01e4\u01e8\3\2\2\2\u01e5\u01e7\13\2"+
		"\2\2\u01e6\u01e5\3\2\2\2\u01e7\u01ea\3\2\2\2\u01e8\u01e9\3\2\2\2\u01e8"+
		"\u01e6\3\2\2\2\u01e9\u01eb\3\2\2\2\u01ea\u01e8\3\2\2\2\u01eb\u01ec\7@"+
		"\2\2\u01ec\u01ed\7@\2\2\u01ed\u01ee\7@\2\2\u01ee\u008a\3\2\2\2\u01ef\u01f0"+
		"\t\5\2\2\u01f0\u01f1\bF\3\2\u01f1\u008c\3\2\2\2\u01f2\u01f7\7)\2\2\u01f3"+
		"\u01f6\5\u0097L\2\u01f4\u01f6\n\6\2\2\u01f5\u01f3\3\2\2\2\u01f5\u01f4"+
		"\3\2\2\2\u01f6\u01f9\3\2\2\2\u01f7\u01f5\3\2\2\2\u01f7\u01f8\3\2\2\2\u01f8"+
		"\u01fa\3\2\2\2\u01f9\u01f7\3\2\2\2\u01fa\u01fb\7)\2\2\u01fb\u008e\3\2"+
		"\2\2\u01fc\u0201\7]\2\2\u01fd\u0200\5\u0097L\2\u01fe\u0200\n\7\2\2\u01ff"+
		"\u01fd\3\2\2\2\u01ff\u01fe\3\2\2\2\u0200\u0203\3\2\2\2\u0201\u01ff\3\2"+
		"\2\2\u0201\u0202\3\2\2\2\u0202\u0204\3\2\2\2\u0203\u0201\3\2\2\2\u0204"+
		"\u0205\7_\2\2\u0205\u0090\3\2\2\2\u0206\u0209\7)\2\2\u0207\u020a\5\u0097"+
		"L\2\u0208\u020a\n\6\2\2\u0209\u0207\3\2\2\2\u0209\u0208\3\2\2\2\u020a"+
		"\u020b\3\2\2\2\u020b\u020c\7)\2\2\u020c\u0092\3\2\2\2\u020d\u020f\t\b"+
		"\2\2\u020e\u0210\t\t\2\2\u020f\u020e\3\2\2\2\u020f\u0210\3\2\2\2\u0210"+
		"\u0212\3\2\2\2\u0211\u0213\4\62;\2\u0212\u0211\3\2\2\2\u0213\u0214\3\2"+
		"\2\2\u0214\u0212\3\2\2\2\u0214\u0215\3\2\2\2\u0215\u0094\3\2\2\2\u0216"+
		"\u0217\t\n\2\2\u0217\u0096\3\2\2\2\u0218\u0219\7^\2\2\u0219\u021d\t\13"+
		"\2\2\u021a\u021d\5\u009bN\2\u021b\u021d\5\u0099M\2\u021c\u0218\3\2\2\2"+
		"\u021c\u021a\3\2\2\2\u021c\u021b\3\2\2\2\u021d\u0098\3\2\2\2\u021e\u021f"+
		"\7^\2\2\u021f\u0220\4\62\65\2\u0220\u0221\4\629\2\u0221\u0228\4\629\2"+
		"\u0222\u0223\7^\2\2\u0223\u0224\4\629\2\u0224\u0228\4\629\2\u0225\u0226"+
		"\7^\2\2\u0226\u0228\4\629\2\u0227\u021e\3\2\2\2\u0227\u0222\3\2\2\2\u0227"+
		"\u0225\3\2\2\2\u0228\u009a\3\2\2\2\u0229\u022a\7^\2\2\u022a\u022b\7w\2"+
		"\2\u022b\u022c\5\u0095K\2\u022c\u022d\5\u0095K\2\u022d\u022e\5\u0095K"+
		"\2\u022e\u022f\5\u0095K\2\u022f\u009c\3\2\2\2\33\2\u0197\u019d\u01a3\u01a8"+
		"\u01ae\u01b2\u01b8\u01bb\u01c0\u01c3\u01cb\u01cf\u01d8\u01dd\u01e8\u01f5"+
		"\u01f7\u01ff\u0201\u0209\u020f\u0214\u021c\u0227";
	public static final ATN _ATN =
		ATNSimulator.deserialize(_serializedATN.toCharArray());
	static {
		_decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
		for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
			_decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
		}
	}
}